// BeforeOptimization.cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <chrono>

// 粒子结构体
struct Particle {
    float x, y, z;    // 位置坐标
    float vx, vy, vz; // 速度
    // 其他属性
};

// 粒子容器
std::vector<Particle*> particles;

// 模拟函数
void simulate(int steps) {
    for (int step = 0; step < steps; ++step) {
        // 每个模拟步骤可能创建和销毁数千个粒子
        for (int i = 0; i < 1000; i++) {
            particles.push_back(new Particle());
        }

        // 处理粒子逻辑（此处省略具体逻辑）

        // 假设我们在这里销毁一些粒子
        for (int i = 0; i < 500; i++) {
            delete particles[i];
            particles[i] = nullptr;
        }

        // 清理并整理容器
        particles.erase(std::remove(particles.begin(), particles.end(), nullptr), particles.end());
    }
}

int main() {
    const int simulationSteps = 1000;

    // 记录开始时间
    auto start = std::chrono::high_resolution_clock::now();

    // 运行模拟
    simulate(simulationSteps);

    // 记录结束时间
    auto end = std::chrono::high_resolution_clock::now();

    // 计算持续时间
    std::chrono::duration<double> duration = end - start;

    std::cout << "Before Optimization:" << std::endl;
    std::cout << "Simulation of " << simulationSteps << " steps took " 
              << duration.count() << " seconds." << std::endl;

    // 清理剩余粒子
    for (auto p : particles) {
        delete p;
    }
    particles.clear();

    return 0;
}
